/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.compassion.action;

import com.opensymphony.xwork2.ActionContext;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.logging.Logger;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import org.omg.PortableServer.REQUEST_PROCESSING_POLICY_ID;
import sv.com.compassion.dao.GenericoDAO;
import sv.com.compassion.entidades.Beneficiario;
import sv.com.compassion.entidades.Chequeo;
import sv.com.compassion.entidades.Padecimiento;
import sv.com.compassion.util.ComunAction;
import sv.com.compassion.util.Constantes;
import sv.com.compassion.util.Fecha;
import sv.com.compassion.util.JqGrid;
import sv.com.compassion.util.RowsGrid;


/** Interacción del mantenimiento Chequeo Médico
 * @author geovany
*/
public class ChequeoMedicoAction extends ComunAction {
    private GenericoDAO genericoDAO;
    private Chequeo     chequeo;

    public String getVERhis() {
        return VERhis;
    }

    public void setVERhis(String VERhis) {
        this.VERhis = VERhis;
    }

    public Chequeo getChequeo() {
        return chequeo;
    }

    public void setChequeo(Chequeo chequeo) {
        this.chequeo = chequeo;
    }

    public String getCodBen() {
        return codBen;
    }

    public void setCodBen(String codBen) {
        this.codBen = codBen;
    }

    public String getFecCon() {
        return fecCon;
    }

    public void setFecCon(String fecCon) {
        this.fecCon = fecCon;
    }

    public String getFormaBus() {
        return formaBus;
    }

    public void setFormaBus(String formaBus) {
        this.formaBus = formaBus;
    }

    public String getIdPad() {
        return idPad;
    }

    public void setIdPad(String idPad) {
        this.idPad = idPad;
    }

    public String getIdRanEda() {
        return idRanEda;
    }

    public void setIdRanEda(String idRanEda) {
        this.idRanEda = idRanEda;
    }

    public String getMedi() {
        return medi;
    }

    public void setMedi(String medi) {
        this.medi = medi;
    }

    private String codBen;
    private String idRanEda;
    private String idPad;
    private String medi;
    private String fecCon;
    private String VERhis;
    private String formaBus;
 
 /**
 *Constructor.  
 *@param GenericoDAO interface donde se encuentran los métodos para acceder a 
 * a la clase entidad Chequeo. 
 */  
 public ChequeoMedicoAction(GenericoDAO genericoDAO){
        this.genericoDAO = genericoDAO;
        chequeo = new    Chequeo(); 
        chequeo.setIdBeneficiario(new Beneficiario());
        chequeo.setIdPadecimiento(new Padecimiento());           
}  
/**
 * Busca el método que se ejecutara
 */  
    @Override
    public String execute(){
        buscarMetodo(chequeo);        
        return null;
    }
 /**
 * @param objeto de la entidad Chequeo
 * Inserta un nuevo Chequeo Médico, usa la entidad Chequeo
 */        
    @Override    
    public void agregarEntidad(Object o) {
        Chequeo c;
        try{
          //  String  cheque =  (String) getRequest().getAttribute("cheque");
            Date    date    =   new Date();
            c = (Chequeo)o;
            
            Map session = ActionContext.getContext().getSession();
            String idUsuario = session.get("idUsuario").toString();
            
            Calendar cal = Calendar.getInstance();
            date=cal.getTime();
            
            c.setAuAddUsr(Integer.parseInt(idUsuario));
            c.setAuAddDat(date);
            
            genericoDAO.save(c);
            
        }catch(Exception e){
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, e);
            enviarMensajeStatic(Constantes.MENSAJE_ERROR+e.getCause().toString(), getResponse());
        }
    }
/**
 * @param objeto de la entidad Chequeo
 * Modifica un Chequeo Médico a inactivo (-1)
 */     
        @Override
    public void borrarEntidad(Object o) {
        List<Chequeo> listCh;
        Chequeo c;
        try{
            if(getId()!=null){
                listCh = genericoDAO.find("select m FROM Chequeo m where m.idChequeo = "+getId(), null, null);
                if(!listCh.isEmpty()){
                    c = listCh.get(0);
                    c.setEstChequeo(-1);
                    genericoDAO.update(c);
                }
            }            
        }catch(Exception e){
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, e);
            enviarMensajeStatic(Constantes.MENSAJE_ERROR+e.getCause().toString(), getResponse());
        }
    }
/**
 * @param objeto de la entidad Chequeo
 * Actualiza un chequeo médico.
 */        
    @Override
    public void editarEntidad(Object o) {
        Chequeo c;
        try{
            Date    date    =   new Date();
            c = (Chequeo)o;
            
            Map session = ActionContext.getContext().getSession();
            String idUsuario = session.get("idUsuario").toString();
            
            Calendar cal = Calendar.getInstance();
            date=cal.getTime();
            
            c.setIdChequeo(new Integer(getId()));
            
            setAuModDat(date);
            setAuModUsr(Integer.parseInt(idUsuario));
            
            genericoDAO.update(c);
            
        }catch(Exception e){
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, e);
            enviarMensajeStatic(Constantes.MENSAJE_ERROR+e.getCause().toString(), getResponse());
        }
    }
/**
 * Este método realiza las búsquedas de Chequeos Médicos para llenar el grid del mantenimiento
 * esperando los filtros:
 *       codBen,
 *       idRanEda,
 *       VERhis, 
 *       idPad,
 *       medi,
 *       fecCon
 */     
    @Override
    public void alimentarGrid() {
        JqGrid jg = new JqGrid();
        int total = 0;
        
        Map session = ActionContext.getContext().getSession();
        String idUsuario = session.get("idUsuario").toString();
        String idCargo = session.get("idCargo").toString();
        
        List<Chequeo> listaChequeo = null;
        String query="";
        codBen = getRequest().getParameter("CodBen");
    //    nomBen = getRequest().getParameter("NomBen");
    //    apeBen = getRequest().getParameter("ApeBen");
        idRanEda = getRequest().getParameter("IdRanEda");
        idPad = getRequest().getParameter("IdPad");
        medi = getRequest().getParameter("Medi");
        fecCon = getRequest().getParameter("FecCon");
        VERhis = getRequest().getParameter("VERhis");
        formaBus = getRequest().getParameter("FormaBus");
        String codBenquery = "";
       // String nomBenquery = "";
       // String apeBenquery = "";
        String queryidRanEda = "";
        String queryidPad = "";
        String mediquery = "";
        String  fecConquery = "";
        String queryAux = "";
        if(idCargo.equals("6") || idCargo.equals("7") || idCargo.equals("8") || idCargo.equals("9")){
            queryAux = "m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.idCdi IN (SELECT x.idCdi FROM Asociacion x WHERE x.idEmpleado = '" + idUsuario + "'))  and ";
        }
     //   nomBenquery = "m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.nomBeneficiario like upper('%" + nomBen + "%')) ";
        if(!codBen.equals("") || !idRanEda.equals("") || !idPad.equals("")  || !medi.equals("")  || !fecCon.equals("")){
            if(!codBen.equals("")){
                codBenquery = " m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.codBeneficiario like '%" + codBen + "%') and";
            }
         /*   if(!apeBen.equals("")){
                apeBenquery = "and m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.apeBeneficiario like upper('%" + apeBen + "%')) ";
            }*/
            if(!idRanEda.equals("")){
               queryidRanEda = " m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.edaBeneficiario >= (SELECT r.limMin FROM Rangoedad r WHERE r.idRangoEdad = '" + idRanEda + "') and b.edaBeneficiario <= (SELECT r.limMax FROM Rangoedad r WHERE r.idRangoEdad = '" + idRanEda + "')) and";
            }
            if(!idPad.equals("")){
               queryidPad = " m.idPadecimiento = '" + idPad + "' and";
            }
           if(!medi.equals("")){
                mediquery = " m.medRecetados like upper('%" + medi + "%')) and";
            }
           if(!fecCon.equals("")){
                fecConquery = " m.fecConsulta = '" + fecCon + "' and";
            }
        }
        String verHistorial;
        String verHistorialTemp = "";
        if(VERhis.equals("true")){
            verHistorial = "-1";
            verHistorialTemp = "1";
        }else{
            verHistorial = "1";
            verHistorialTemp = "1";
        }

        try{
                if(getSearch() != null && getSearch().equals("true")){
                    /*query = "SELECT c FROM Chequeo c  where";
                    if(getFecConsulta()!=null){
                        query += " c.fecConsulta = '"+Fecha.date2String(Fecha.string2Date(getFecConsulta()),"yyyy-MM-dd")+"' and  ";
                    }

                    query = query.substring(0, query.length()-5)+" order by c.fecConsulta "+getSord();
                    listaChequeo = genericoDAO.find(query,getRows(),(getRows()*getPage())-getRows());*/

                }else{
                    query = "SELECT m FROM Chequeo m  WHERE " +
                                queryAux + 
                            //    nomBenquery +
                                codBenquery +
                             //   apeBenquery + 
                                queryidRanEda +
                                queryidPad +
                                mediquery + 
                                fecConquery +
                                " (m.estChequeo like upper('" + verHistorial + "') or "
                                + "m.estChequeo like upper('" + verHistorialTemp + "'))"
                                + " ORDER BY m.fecConsulta " + getSord();
                    //query = query.substring(0, query.length()-5) + " ORDER BY m.fecConsulta " + getSord();
                    listaChequeo = genericoDAO.find(query,getRows(),(getRows()*getPage())-getRows());
                }
                if(formaBus.equals("1")){ 
                    query="";
                }
                query = "SELECT COUNT(m) FROM Chequeo m  WHERE " +
                                queryAux + 
                            //    nomBenquery +
                                codBenquery +
                            //    apeBenquery + 
                                queryidRanEda +
                                queryidPad +
                                mediquery + 
                                fecConquery +
                                " (m.estChequeo like upper('" + verHistorial + "') or "
                                + "m.estChequeo like upper('" + verHistorialTemp + "'))";
                total = genericoDAO.countRow(query);
                
                //configuraciones basicas
                jg.setPage(getPage());
                jg.setRecords(total);
                jg.setTotal((int) Math.ceil((double) total / (double) getRows()));
                jg.setSord(getSord());
                jg.setSidx(getSidx());
                
                List<RowsGrid> rows = new ArrayList<RowsGrid>();
                
                for(Chequeo c: listaChequeo){
                    
                    RowsGrid r = new RowsGrid(); 
                    
                    r.setId(c.getIdChequeo().toString());
                    
                    List cell = new ArrayList();
                    cell.add(c.getIdBeneficiario().getCodBeneficiario());
                    cell.add(c.getIdBeneficiario().getIdBeneficiario());
                  //  cell.add(c.getIdBeneficiario().getNomBeneficiario() + " " + c.getIdBeneficiario().getApeBeneficiario());
                    
                    cell.add(c.getIdPadecimiento().getIdPadecimiento());
                    cell.add(c.getIdPadecimiento().getNomPadecimiento());
                    
                    cell.add(c.getFecConsulta() != null ? c.getFecConsulta().toString(): "");
                    
                    cell.add(c.getMedRecetados() != null ? c.getMedRecetados() : "");
                    cell.add(c.getDosMedicamentos()!= null ? c.getDosMedicamentos() : "");
                    
                    cell.add(c.getFecIniPadecimiento() != null ? c.getFecIniPadecimiento().toString() : "");
                    cell.add(c.getFecFinPadecimiento() != null ? c.getFecFinPadecimiento().toString() : "");
                    
                    cell.add(c.getComAdicionales() != null ? c.getComAdicionales() : "");
                    
                    cell.add(c.getDesnutricion());
                    
                    cell.add(c.getNomMedico() != null ? c.getNomMedico() : "");
                    cell.add(c.getApeMedico() != null ?c.getApeMedico() : "");
                    cell.add(c.getDuiMedico() != null ? c.getDuiMedico() : "");
                    
                    if(c.getEstChequeo() == 1){
                        cell.add("Activo");
                    }else{
                        cell.add("Inactivo");
                    }
                    
                    cell.add(c.getAuAddUsr());
                    cell.add(c.getAuAddDat().toString());
                    
                    r.setCell(cell);
                    rows.add(r);
                }

                jg.setRows(rows); 
                JSONObject jo = JSONObject.fromObject(jg);
                enviarJsonNavegador(getResponse(), jo);
        }catch(Exception e){
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, e);
            enviarMensajeStatic(Constantes.MENSAJE_ERROR+e.getCause().toString(), getResponse());
        }
    }

    public Integer getIdBeneficiario() {
        return chequeo.getIdBeneficiario().getIdBeneficiario();
    }

    public void setIdBeneficiario(Integer idBeneficiario) {
       chequeo.getIdBeneficiario().setIdBeneficiario(idBeneficiario);
    }
    public Integer getIdPadecimiento() {
        return chequeo.getIdPadecimiento().getIdPadecimiento();
    }

    public void setIdPadecimiento(Integer idPadecimiento) {
       chequeo.getIdPadecimiento().setIdPadecimiento(idPadecimiento);
    }
    public String getFecConsulta() {
        return Fecha.date2String(chequeo.getFecConsulta());
    }
    public void setFecConsulta(String fecConsulta) {
        try {
            if(fecConsulta != null && !fecConsulta.equals("")){
                chequeo.setFecConsulta(Fecha.string2Date(fecConsulta));
            }    
        } catch (ParseException ex) {
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public String getFecFinPadecimiento() {
        return Fecha.date2String(chequeo.getFecFinPadecimiento());
    }
    public void setFecFinPadecimiento(String fecFinPadecimiento) {
        try {
            if(fecFinPadecimiento != null && !fecFinPadecimiento.equals("")){
                chequeo.setFecFinPadecimiento(Fecha.string2Date(fecFinPadecimiento));
            }    
        } catch (ParseException ex) {
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }    
    public String getFecIniPadecimiento() {
        return Fecha.date2String(chequeo.getFecIniPadecimiento());
    }
    public void setFecIniPadecimiento(String fecIniPadecimiento) {
        try {
            if(fecIniPadecimiento != null && !fecIniPadecimiento.equals("")){
                chequeo.setFecIniPadecimiento(Fecha.string2Date(fecIniPadecimiento));
            }    
        } catch (ParseException ex) {
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }      
    public void setMedRecetados(String medRecetados){
        chequeo.setMedRecetados(medRecetados);
    }
    public String getMedRecetados(){
        return chequeo.getMedRecetados();
    }
    public void setDosMedicamentos(String dosMedicamentos){
        chequeo.setDosMedicamentos(dosMedicamentos);
    }
    public String getDosMedicamentos(){
        return chequeo.getDosMedicamentos();
    }    
    public void setComAdicionales(String comAdicionales){
        chequeo.setComAdicionales(comAdicionales);
    }
    public String getComAdicionales(){
        return chequeo.getComAdicionales();
    } 
    public void setNomMedico(String nomMedico){
        chequeo.setNomMedico(nomMedico);
    }
    public String getNomMedico(){
        return chequeo.getNomMedico();
    }  
    public void setApeMedico(String apeMedico){
        chequeo.setApeMedico(apeMedico);
    }
    public String getApeMedico(){
        return chequeo.getApeMedico();
    } 
    public void setDuiMedico(String duiMedico){
        chequeo.setDuiMedico(duiMedico);
    }
    public String getDuiMedico(){
        return chequeo.getDuiMedico();
    }     
    public void setDesnutricion(boolean  desnutricion){
        chequeo.setDesnutricion(desnutricion);
    }
    public boolean  getDesnutricion(){
        return chequeo.getDesnutricion();
    }        
    
    public int getAuAddUsr() {
        return chequeo.getAuAddUsr();
    }

    public void setAuAddUsr(Integer auAddUsr) {
        chequeo.setAuAddUsr(auAddUsr);
    }

    public String getAuAddDat() {
        return Fecha.date2String(chequeo.getAuAddDat());
    }

    public void setAuAddDat(String auAddDat) {
        try {
             if(auAddDat != null && !auAddDat.equals("")){
                chequeo.setAuAddDat(Fecha.string2Date(auAddDat));
            }   
        } catch (ParseException ex) {
            Logger.getLogger(ChequeoMedicoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public int getAuModUsr() {
        return chequeo.getAuModUsr();
    }

    public void setAuModUsr(Integer auModUsr) {
        chequeo.setAuModUsr(auModUsr);
    }

    public Date getAuModDat() {
        return chequeo.getAuModDat();
    }

    public void setAuModDat(Date auModDat) {
        chequeo.setAuModDat(auModDat);
    }
    
    public int getEstChequeo() {
        return chequeo.getEstChequeo();
    }

    public void setEstChequeo(int estChequeo) {
        chequeo.setEstChequeo(estChequeo);
    }
  /**
 * Ejecuta el reporte de Chequeos Médicos
 * esperando los filtros:
 *       codBen,
 *       idRanEda,
 *       VERhis, 
 *       idPad,
 *       medi,
 *       fecCon <br>
 * @return  book ya completo con los datos que se desea expulsar.
 */   
    @Override
    public void reporteXls() {
        
        Map session = ActionContext.getContext().getSession();
        String idUsuario = session.get("idUsuario").toString();
        String idCargo = session.get("idCargo").toString();
        
        String query="";
        codBen = getRequest().getParameter("CodBen");
      /*  nomBen = getRequest().getParameter("NomBen");
        apeBen = getRequest().getParameter("ApeBen");*/
        idRanEda = getRequest().getParameter("IdRanEda");
        idPad = getRequest().getParameter("IdPad");
        medi = getRequest().getParameter("Medi");
        fecCon = getRequest().getParameter("FecCon");
        VERhis = getRequest().getParameter("VERhis");
        String codBenquery = "";
       /* String nomBenquery = "";
        String apeBenquery = "";*/
        String queryidRanEda = "";
        String queryidPad = "";
        String mediquery = "";
        String  fecConquery = "";
        String queryAux = "";
        if(idCargo.equals("6") || idCargo.equals("7") || idCargo.equals("8") || idCargo.equals("9")){
            queryAux = " m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.idCdi IN (SELECT x.idCdi FROM Asociacion x WHERE x.idEmpleado = '" + idUsuario + "')) and ";
        }
      //  nomBenquery = "m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.nomBeneficiario like upper('%" + nomBen + "%')) ";
        if(!codBen.equals("") ||  !idRanEda.equals("") || !idPad.equals("")  || !medi.equals("")  || !fecCon.equals("")){
            if(!codBen.equals("")){
                codBenquery = " m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.codBeneficiario like '%" + codBen + "%') and ";
            }
           /* if(!apeBen.equals("")){
                apeBenquery = "and m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.apeBeneficiario like upper('%" + apeBen + "%')) ";
            }*/
            if(!idRanEda.equals("")){
               queryidRanEda = " m.idBeneficiario IN (SELECT b.idBeneficiario FROM Beneficiario b WHERE b.edaBeneficiario >= (SELECT r.limMin FROM Rangoedad r WHERE r.idRangoEdad = '" + idRanEda + "') and b.edaBeneficiario <= (SELECT r.limMax FROM Rangoedad r WHERE r.idRangoEdad = '" + idRanEda + "')) and ";
            }
            if(!idPad.equals("")){
               queryidPad = " m.idPadecimiento = '" + idPad + "' and ";
            }
           if(!medi.equals("")){
                mediquery = " m.medRecetados like upper('%" + medi + "%')) and ";
            }
           if(!fecCon.equals("")){
                fecConquery = " m.fecConsulta = '" + fecCon + "' and ";
            }
        }
        String verHistorial;
        String verHistorialTemp = "";
        if(VERhis.equals("true")){
            verHistorial = "-1";
            verHistorialTemp = "1";
        }else{
            verHistorial = "1";
            verHistorialTemp = "1";
        }
        
        query = "SELECT m FROM Chequeo m  WHERE " +
                    queryAux + 
                  //  nomBenquery +
                    codBenquery +
                  //  apeBenquery + 
                    queryidRanEda +
                    queryidPad +
                    mediquery + 
                    fecConquery +
                    " (m.estChequeo like upper('" + verHistorial + "') or "
                    + "m.estChequeo like upper('" + verHistorialTemp + "'))"
                    + " ORDER BY m.fecConsulta desc";
  
        HSSFWorkbook libro  = null;
        OutputStream out    = null;
        HttpServletResponse response = ServletActionContext.getResponse();
        
        try{
                out = response.getOutputStream();            

                // capturamos la direccion absoluta de la plantilla del reporte en el servidor 
            //    String path = getServlet().getServletContext().getRealPath("/xlt/reporteConsolidadoSMS.xlt");
                
                String ruta = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/reports/reportPadecimientos.xlt");
                FileInputStream stream = new FileInputStream(ruta); // obtenemos al archivo
                libro = new HSSFWorkbook(stream);      // el libro de trabajo

                response.setHeader("Pragma", "cache");          // Para mostrar ventana de apertura del archivo
                response.setContentType("application/ms-excel");
                response.setHeader("Content-Disposition","attachment;filename=reporteTramientosMedicos.xls");
        
                libro = generarExcel(libro,query); 

                libro.write(out);
                out.flush();
                out.close();
        }catch(Exception e){
          e.printStackTrace();
        }         
    }
  private HSSFWorkbook generarExcel(HSSFWorkbook book, String queryExt) {
          /**
     * EL ESTILO DEL REPORTE
     */
      HSSFCellStyle styleBordere = book.createCellStyle();
      HSSFFont fontReport = book.createFont();
      fontReport.setFontName("Arial");
      fontReport.setFontHeightInPoints((short)10);
      styleBordere.setFont(fontReport);
      styleBordere.setBorderBottom(styleBordere.BORDER_THIN);
      styleBordere.setBorderLeft(styleBordere.BORDER_THIN);
      styleBordere.setBorderRight(styleBordere.BORDER_THIN);
      styleBordere.setBorderTop(styleBordere.BORDER_THIN);
      styleBordere.setAlignment(HSSFCellStyle.ALIGN_CENTER);
      
      List<Chequeo> listaChequeo = null;
      
      
      //String feConsulta   = (String)getRequest().getParameter("feConsulta");
      
      HSSFSheet sheet = book.getSheet("Hoja1"); //nombre de la hoja 
      HSSFRow row = null;
              //sheet.getRow(1);
      HSSFCell celda = null;
      Date      today    =   new Date();
      SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    //  String    ahora   =   ;
      row = sheet.createRow(3);
      celda = row.createCell(7);
      celda.setCellValue(new HSSFRichTextString(String.valueOf(sdf.format(today))));
      celda.setCellStyle(styleBordere);
      int col = 1;
      int fila  = 11;
      try{
          String query;
          
          query = queryExt;
          /*if(feConsulta!=null && !feConsulta.equals("")){
            query += " c.fecConsulta = '"+Fecha.date2String(Fecha.string2Date(feConsulta),"yyyy-MM-dd")+"' and  ";
          }
          query = query.substring(0, query.length()-5)+" order by c.fecConsulta ";*/
          listaChequeo = genericoDAO.find(query,null,null);
         // listaActividad = genericoDAO.find(query,null,null);

          for(Chequeo c: listaChequeo){

                col = 1;
                row = sheet.createRow(fila);

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(c.getFecConsulta() != null ? String.valueOf(sdf.format(c.getFecConsulta())): ""));
                celda.setCellStyle(styleBordere);

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(c.getIdBeneficiario().getCodBeneficiario()));
                celda.setCellStyle(styleBordere);
                
              /*  celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(String.valueOf(c.getIdBeneficiario().getNomBeneficiario()+" "+ c.getIdBeneficiario().getApeBeneficiario())));
                celda.setCellStyle(styleBordere);*/

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(String.valueOf(c.getIdPadecimiento().getNomPadecimiento())));
                celda.setCellStyle(styleBordere);
                
                String desnutricion = "";
                
                if(c.getDesnutricion()){
                    desnutricion = "Sí";
                }else{
                    desnutricion = "No";
                }

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(desnutricion));
                celda.setCellStyle(styleBordere);

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(String.valueOf(c.getFecIniPadecimiento()!= null ?sdf.format(c.getFecIniPadecimiento()): "")));
                celda.setCellStyle(styleBordere);

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(String.valueOf(c.getFecFinPadecimiento()!= null?sdf.format(c.getFecFinPadecimiento()): "")));
                celda.setCellStyle(styleBordere);

                celda = row.createCell(col++);
                celda.setCellValue(new HSSFRichTextString(String.valueOf(c.getComAdicionales() != null ? c.getComAdicionales() : "")));
                celda.setCellStyle(styleBordere);                         

                fila ++;
          }  
      }catch(Exception e){
          e.printStackTrace();
      }    
      return book;  
    }
    
            
}
